using System;
using System.ComponentModel;
using System.Collections.Generic;
using System.Runtime.Serialization;

namespace SBPweb.Components
{
	/// <summary>
	/// Interface IComponent
	/// </summary>
    public interface IComponent : System.ComponentModel.IComponent, IDisposable, ISerializable
    {
		/// <summary>
		/// List of copmponents
		/// </summary>
        List<System.ComponentModel.IComponent> Components
        {
            get;
        }

		/// <summary>
		/// Initialize
		/// </summary>
		/// <returns></returns>
        bool Initialize();
		/// <summary>
		/// Terminate
		/// </summary>
		/// <returns></returns>
        bool Terminate();

		/// <summary>
		/// Raised when start to initialize
		/// </summary>
        event CancelEventHandler Initializing;
		/// <summary>
		/// Raised when initialized
		/// </summary>
        event EventHandler Initialized;

		/// <summary>
		/// Raised when start to Terminate
		/// </summary>
        event CancelEventHandler Terminating;
		/// <summary>
		/// Raised when Terminated
		/// </summary>
        event EventHandler Terminated;
    }

}